#ST_SPLIT
ST_SPLIT函数用于返回input几何对象被blade几何对象切割之后产生的几何对象。
本函数遵守如下规则:
- 输入参数input和blade须具有相同的空间参考系,否则函数返回错误。
- 输入参数input和blade任意一个为NULL时,函数返回NULL。
- 输入参数input和blade任意一个的坐标中包含NAN和INF时,函数返回错误。
- 输入参数input只能为LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。
- input为LineString时,blade可以为Point、MultiPoint、LineString、MultiLineString、Polygon或MultiPolygon。
- input为Polygon时,blade只能为MultiLineString和LineString。
- input为GeometryCollection时,会依次对GeometryCollection中的每个成员做切割,如果其中一个成员不支持切割,返回错误。
input
通用表达式,其值必须为有效的ST_GEOMETRY类型的数据。
blade
通用表达式,其值必须为有效的ST_GEOMETRY类型的数据。
示例
SELECT st_astext(st_split(st_geomfromtext('linestring(1 1, 3 3)'), st_geomfromtext('point(2 2)')), 0) split FROM dual;
SPLIT
----------------------------------------------------------------
GEOMETRYCOLLECTION (LINESTRING (1 1, 2 2), LINESTRING (2 2, 3 3))
SELECT st_astext(st_split(st_geomfromtext('linestring(1 1, 4 4)'), st_geomfromtext('multipoint(2 2, 3 3)')), 0) split FROM dual;
SPLIT
----------------------------------------------------------------
GEOMETRYCOLLECTION (LINESTRING (3 3, 4 4), LINESTRING (1 1, 2 2), LINESTRING (2 2, 3 3))
SELECT st_astext(st_split(st_geomfromtext('linestring(1 1, 4 4)'), st_geomfromtext('polygon((0 0, 0 2, 2 2, 2 0, 0 0))')), 0) split FROM dual;
SPLIT
----------------------------------------------------------------
GEOMETRYCOLLECTION (LINESTRING (1 1, 2 2), LINESTRING (2 2, 4 4))
SELECT st_astext(st_split(st_geomfromtext('polygon((0 0, 0 2, 2 2, 2 0, 0 0))'), st_geomfromtext('linestring(1 -1, 1 3)')), 0) split FROM dual;
SPLIT
----------------------------------------------------------------
GEOMETRYCOLLECTION (POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0)), POLYGON ((1 2, 2 2, 2 0, 1 0, 1 2)))
SELECT st_astext(st_split(st_geomfromtext('geometrycollection(polygon((0 0, 0 2, 2 2, 2 0, 0 0)), linestring(0 0, 2 2))'), st_geomfromtext('linestring(1 -1, 1 3)')), 0) split FROM dual;
SPLIT
----------------------------------------------------------------
GEOMETRYCOLLECTION (POLYGON ((0 0, 0 2, 1 2, 1 0, 0 0)), POLYGON ((1 2, 2 2, 2 0, 1 0, 1 2)), LINESTRING (0 0, 1 1), LINESTRING (1 1, 2 2))